技巧33 带通配符的DNS

在使用Docker时,通常有许多正在运行的容器需要引用一个中央的或外部的服务。在测试或开发这类系统时,为这些服务分配一个静态的IP地址是很常见的做法。但是对于许多基于Docker的系统(如Openshift)来说,一个IP地址是不够的。这类应用需要的是可以使用DNS查找到服务的地址。

这类问题的常见解决方案是在运行服务的宿主机上编辑 /etc/hosts 文件。但是这并不是每次都可用。举个例子,用户可能没有权限编辑该文件。它也不是每次都可行。用户要操作的主机数量太多以至于根本无法维护,或者别人定制的DNS查找服务的缓存可能会影响到用户。

在这种情况下,其实有一种使用“真实”DNS服务器的解决方案。

问题

用户需要一个DNS可以解析到一个特定的IP地址的URL。

解决方案

使用NIP.IO网站服务将一个IP地址解析到一个DNS可以解析的URL,无须任何其他的DNS配置。

这个方案真的很简单。NIP.IO是一项基于Web的服务,它会为用户自动将一个IP地址转换成一个URL路径。用户只需要把URL http://IP.nip.io里面的IP部分替换成期望的IP地址即可。

不妨假设用户想要将一个URL路径解析到的IP地址是“10.0.0.1”。那么用户最终得到的URL路径可能看上去会是这样:http://myappname.10.0.0.1.nip.io。其中myappname代表用户给应用起的名字,10.0.0.1指的是用户希望URL路径解析到的IP地址,而nip.io则是互联网上管理该DNS查找服务时的“真实”域。

myappname.部分是可选的,因此下面这个 URL 路径也将会解析到相同的 IP 地址:http:// 10.0.0.1.nip.io。

讨论

不仅是面向基于Docker的服务,本技巧在各种情况下使用都很方便。

很显然,这项技巧并不适合生产环境或像样的UAT环境,因为它会向第三方服务提交DNS请求,并且会展示内网IP地址布局的相关信息。但是这对于开发工作来说可能是一个很方便的工具。

如果用户在使用此服务的同时也在用HTTPS,那么请确保URL路径(或者说一个恰当的通配符)已包含在使用的证书里。

results matching ""

    No results matching ""